"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/5/23 10:24
@Description : 
面向对象的思想 三大特征
1. 封装
     1.1 类中的属性尽可能的隐藏  私有化     限制属性的访问  __变量名  私有
     1.2 函数公开化   get  set
2. 继承
3. 多态
"""


class Teacher:
    def __init__(self, name, age, salary):
        self.name = name
        self.__age = age  # 私有属性  _Teacher__age
        self.salary = salary

    # 给age属性赋值 保证值的合理性
    def set_age(self, age):
        if 0 <= age <= 130:
            self.__age = age
        else:
            self.__age = 20
            print('年龄参数不合法,赋值默认值')

    # 获取属性的值
    def get_age(self):
        return self.__age


teacher = Teacher('tom', 20, 2000)
# 对象.属性名
print(teacher.name)
# print(teacher.age)   # AttributeError: 'Teacher' object has no attribute 'age'
# print(teacher._Teacher__age)  # 属性私有化后  名字会被维护成 _类名__属性名     不推荐直接访问私有属性
print(teacher.get_age())
print(teacher.salary)

# 更新属性值
# teacher.age = 200  # 赋值过程合法不合理
# teacher.set_age(150)
# print(teacher.get_age())

# 动态给实例添加属性 age
# teacher.age = 150
# print(teacher.age)
